/*
 * Copyright (c) 2025 CAX Conversion Project
 */
package com.comac.ins.isfd.service;

import java.util.Collection;
import java.util.Date;
import java.util.List;

import com.anwen.mongo.service.IService;
import com.comac.ins.common.mybatis.core.page.PageQuery;
import com.comac.ins.common.mybatis.core.page.TableDataInfo;
import com.comac.ins.isfd.domain.IsfdAnalysis;
import com.comac.ins.isfd.domain.bo.AlgorithmArrangementBo;
import com.comac.ins.isfd.domain.bo.IsfdAnalysisBo;
import com.comac.ins.isfd.domain.bo.query.IsfdAnalysisQueryBo;
import com.comac.ins.isfd.domain.vo.IsfdAnalysisConfigVo;
import com.comac.ins.isfd.domain.vo.IsfdAnalysisCountObjectVo;
import com.comac.ins.isfd.domain.vo.IsfdAnalysisCountResultObjectVo;
import com.comac.ins.isfd.domain.vo.IsfdAnalysisDisplayNameVo;
import com.comac.ins.isfd.domain.vo.IsfdAnalysisVo;

/**
 * 算法service接口
 *
 * @author hxloongs
 * @date 2024-7-9
 */
public interface IIsfdAnalysisService extends IService<IsfdAnalysis> {

    List<IsfdAnalysisCountObjectVo> listCount();

    List<IsfdAnalysisCountResultObjectVo> listCountByListByField(String field);

    List<IsfdAnalysisCountResultObjectVo> listTimeCount(String field, Date startTime, Date endTime);


    TableDataInfo<IsfdAnalysisVo> queryPageList(IsfdAnalysisQueryBo queryBo);

    Boolean add(IsfdAnalysisBo isfdAnalysisBo);

    Boolean update(IsfdAnalysisBo isfdAnalysisBo);

    Boolean deleteWithValidByIds(Collection<String> ids);

    /**
     * 根据算子id查看当前算子对应的所有算法
     */
    TableDataInfo<IsfdAnalysisDisplayNameVo> getPageListByOperatorRefId(String operatorRefId, PageQuery pageQuery);

    /**
     * 算法编排查询
     */
    List<IsfdAnalysisConfigVo> getAlgorithmArrangement(String analysisRefId);

    /**
     * 算法编排 暂存、发布、取消发布
     */
    Boolean algorithmArrangementSave(AlgorithmArrangementBo algorithmArrangementBo);
}
